Iif (typeof define !== 'function') {
var define = require('amdefine')(module);
}
define(function (require) {
'use strict';
var util = require('./util');
var constant = function constant(value) {
return function () {
return value;
};
};
var remote = function remote(url, options) {
return function (model) {
options = util.mix({ url: url, dataType: 'json' }, options);
if (typeof options.data === 'function') {
options.data = options.data(model);
}
var ajax = require('./ajax');
return ajax.request(options);
};
};
var permission = function permission(name, permissionProvider) {
return function () {
permissionProvider = permissionProvider || require('./permission');
permissionProvider.isAllow(name);
};
};
var defaultValue = function defaultValue(_defaultValue, name) {
return function (model, options) {
if (!options.name && !name) {
throw new Error('No property name specified to determine whether value exists in this model');
}
var propertyName = name || options.name;
return model.hasValue(propertyName) ? model.get(propertyName) : _defaultValue;
};
};
var convertTo = function convertTo(type, name) {
return function (model, options) {
if (!options.name && !name) {
throw new Error('No property name specified to convert');
}
var property = name || options.name;
var value = model.get(property);
switch (type) {
case 'number':
return parseInt(value, 10);
case 'string':
return value + '';
case 'boolean':
return !!value;
default:
return value;
}
};
};
return { constant: constant, remote: remote, permission: permission, defaultValue: defaultValue, convertTo: convertTo };
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9kYXRhc291cmNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksT0FBTyxNQUFQLEtBQWtCLFVBQWxCLEVBQThCO0FBQUMsUUFBSSxTQUFTLFFBQVEsVUFBUixFQUFvQixNQUFwQixDQUFULENBQUw7Q0FBbEM7O0FBRUEsT0FBTyxVQUFVLE9BQVYsRUFBbUI7QUFDdEIsaUJBRHNCOztBQUd0QixRQUFNLE9BQU8sUUFBUSxRQUFSLENBQVAsQ0FIZ0I7O0FBS3RCLFFBQU0sV0FBVyxTQUFYLFFBQVcsQ0FBQyxLQUFEO2VBQ2I7bUJBQU07U0FBTjtLQURhLENBTEs7O0FBU3RCLFFBQU0sU0FBUyxTQUFULE1BQVMsQ0FBQyxHQUFELEVBQU0sT0FBTjtlQUNWLFVBQUMsS0FBRCxFQUFXO0FBQ1Asc0JBQVUsS0FBSyxHQUFMLENBQVMsRUFBQyxRQUFELEVBQU0sVUFBVSxNQUFWLEVBQWYsRUFBa0MsT0FBbEMsQ0FBVixDQURPOztBQUdQLGdCQUFJLE9BQU8sUUFBUSxJQUFSLEtBQWlCLFVBQXhCLEVBQW9DO0FBQ3BDLHdCQUFRLElBQVIsR0FBZSxRQUFRLElBQVIsQ0FBYSxLQUFiLENBQWYsQ0FEb0M7YUFBeEM7QUFHQSxnQkFBSSxPQUFPLFFBQVEsUUFBUixDQUFQLENBTkc7O0FBUVAsbUJBQU8sS0FBSyxPQUFMLENBQWEsT0FBYixDQUFQLENBUk87U0FBWDtLQURVLENBVE87O0FBc0J0QixRQUFNLGFBQWEsU0FBYixVQUFhLENBQUMsSUFBRCxFQUFPLGtCQUFQO2VBQ2YsWUFBTTtBQUNGLGlDQUFxQixzQkFBc0IsUUFBUSxjQUFSLENBQXRCLENBRG5CO0FBRUYsK0JBQW1CLE9BQW5CLENBQTJCLElBQTNCLEVBRkU7U0FBTjtLQURlLENBdEJHOztBQTZCdEIsUUFBTSxlQUFlLHNCQUFDLGFBQUQsRUFBZSxJQUFmO2VBQ2pCLFVBQUMsS0FBRCxFQUFRLE9BQVIsRUFBb0I7QUFDaEIsZ0JBQUksQ0FBQyxRQUFRLElBQVIsSUFBZ0IsQ0FBQyxJQUFELEVBQU87QUFDeEIsc0JBQU0sSUFBSSxLQUFKLENBQVUsNEVBQVYsQ0FBTixDQUR3QjthQUE1Qjs7QUFJQSxnQkFBSSxlQUFlLFFBQVEsUUFBUSxJQUFSLENBTFg7O0FBT2hCLG1CQUFPLE1BQU0sUUFBTixDQUFlLFlBQWYsSUFBK0IsTUFBTSxHQUFOLENBQVUsWUFBVixDQUEvQixHQUF5RCxhQUF6RCxDQVBTO1NBQXBCO0tBRGlCLENBN0JDOztBQXlDdEIsUUFBTSxZQUFZLFNBQVosU0FBWSxDQUFDLElBQUQsRUFBTyxJQUFQO2VBQ2QsVUFBQyxLQUFELEVBQVEsT0FBUixFQUFvQjtBQUNoQixnQkFBSSxDQUFDLFFBQVEsSUFBUixJQUFnQixDQUFDLElBQUQsRUFBTztBQUN4QixzQkFBTSxJQUFJLEtBQUosQ0FBVSx1Q0FBVixDQUFOLENBRHdCO2FBQTVCOztBQUlBLGdCQUFJLFdBQVcsUUFBUSxRQUFRLElBQVIsQ0FMUDtBQU1oQixnQkFBSSxRQUFRLE1BQU0sR0FBTixDQUFVLFFBQVYsQ0FBUixDQU5ZOztBQVFoQixvQkFBUSxJQUFSO0FBQ0kscUJBQUssUUFBTDtBQUNJLDJCQUFPLFNBQVMsS0FBVCxFQUFnQixFQUFoQixDQUFQLENBREo7QUFESixxQkFHUyxRQUFMO0FBQ0ksMkJBQU8sUUFBUSxFQUFSLENBRFg7QUFISixxQkFLUyxTQUFMO0FBQ0ksMkJBQU8sQ0FBQyxDQUFDLEtBQUQsQ0FEWjtBQUxKO0FBUVEsMkJBQU8sS0FBUCxDQURKO0FBUEosYUFSZ0I7U0FBcEI7S0FEYyxDQXpDSTs7QUErRHRCLFdBQU8sRUFBQyxrQkFBRCxFQUFXLGNBQVgsRUFBbUIsc0JBQW5CLEVBQStCLDBCQUEvQixFQUE2QyxvQkFBN0MsRUFBUCxDQS9Ec0I7Q0FBbkIsQ0FBUCIsImZpbGUiOiJkYXRhc291cmNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHt2YXIgZGVmaW5lID0gcmVxdWlyZSgnYW1kZWZpbmUnKShtb2R1bGUpfVxuXG5kZWZpbmUoZnVuY3Rpb24gKHJlcXVpcmUpIHtcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBjb25zdCB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbiAgICBjb25zdCBjb25zdGFudCA9ICh2YWx1ZSkgPT4gKFxuICAgICAgICAoKSA9PiB2YWx1ZVxuICAgICk7XG5cbiAgICBjb25zdCByZW1vdGUgPSAodXJsLCBvcHRpb25zKSA9PiAoXG4gICAgICAgICAobW9kZWwpID0+IHtcbiAgICAgICAgICAgICBvcHRpb25zID0gdXRpbC5taXgoe3VybCwgZGF0YVR5cGU6ICdqc29uJ30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhID0gb3B0aW9ucy5kYXRhKG1vZGVsKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgbGV0IGFqYXggPSByZXF1aXJlKCcuL2FqYXgnKTtcblxuICAgICAgICAgICAgIHJldHVybiBhamF4LnJlcXVlc3Qob3B0aW9ucyk7XG4gICAgICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHBlcm1pc3Npb24gPSAobmFtZSwgcGVybWlzc2lvblByb3ZpZGVyKSA9PiAoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHBlcm1pc3Npb25Qcm92aWRlciA9IHBlcm1pc3Npb25Qcm92aWRlciB8fCByZXF1aXJlKCcuL3Blcm1pc3Npb24nKTtcbiAgICAgICAgICAgIHBlcm1pc3Npb25Qcm92aWRlci5pc0FsbG93KG5hbWUpXG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gKGRlZmF1bHRWYWx1ZSwgbmFtZSkgPT4gKFxuICAgICAgICAobW9kZWwsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5uYW1lICYmICFuYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBwcm9wZXJ0eSBuYW1lIHNwZWNpZmllZCB0byBkZXRlcm1pbmUgd2hldGhlciB2YWx1ZSBleGlzdHMgaW4gdGhpcyBtb2RlbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJvcGVydHlOYW1lID0gbmFtZSB8fCBvcHRpb25zLm5hbWU7XG5cbiAgICAgICAgICAgIHJldHVybiBtb2RlbC5oYXNWYWx1ZShwcm9wZXJ0eU5hbWUpID8gbW9kZWwuZ2V0KHByb3BlcnR5TmFtZSkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY29udmVydFRvID0gKHR5cGUsIG5hbWUpID0+IChcbiAgICAgICAgKG1vZGVsLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMubmFtZSAmJiAhbmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcHJvcGVydHkgbmFtZSBzcGVjaWZpZWQgdG8gY29udmVydCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJvcGVydHkgPSBuYW1lIHx8IG9wdGlvbnMubmFtZTtcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IG1vZGVsLmdldChwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSArICcnO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gISF2YWx1ZTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHtjb25zdGFudCwgcmVtb3RlLCBwZXJtaXNzaW9uLCBkZWZhdWx0VmFsdWUsIGNvbnZlcnRUb307XG59KTtcbiJdfQ== |